#line 1 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
// haml.rl written by Fedor Korsakov. spiritusobscurus at gmail dot com

/************************* Required for every parser *************************/
#ifndef RAGEL_HAML_PARSER
#define RAGEL_HAML_PARSER

#include "ragel_parser_macros.h"

// the name of the language
const char *HAML_LANG = "haml";

// the languages entities
const char *haml_entities[] = {
  "space", "comment", "string", "element", "element_class",
  "element_id", "evaluator", "any"
};

// constants associated with the entities
enum {
  HAML_SPACE = 0, HAML_COMMENT, HAML_STRING, HAML_ELEMENT, HAML_ELEMENT_CLASS,
  HAML_ELEMENT_ID, HAML_EVALUATOR, HAML_ANY
};

/*****************************************************************************/

#include "ruby.h"


#line 31 "ext/ohcount_native/ragel_parsers/haml.h"
static const char _haml_actions[] = {
	0, 1, 2, 1, 3, 1, 11, 1, 
	12, 1, 14, 1, 15, 1, 17, 1, 
	18, 1, 19, 1, 20, 1, 21, 1, 
	31, 1, 32, 1, 36, 1, 37, 1, 
	38, 1, 39, 1, 44, 1, 46, 1, 
	47, 1, 48, 1, 53, 1, 54, 1, 
	55, 1, 56, 1, 57, 1, 59, 1, 
	60, 1, 61, 1, 62, 1, 63, 1, 
	70, 1, 71, 1, 72, 1, 73, 1, 
	74, 1, 75, 1, 83, 1, 84, 1, 
	85, 1, 86, 1, 87, 1, 88, 1, 
	89, 1, 90, 1, 91, 1, 100, 1, 
	101, 1, 102, 1, 103, 1, 104, 2, 
	0, 2, 2, 0, 3, 2, 1, 49, 
	2, 1, 67, 2, 2, 38, 2, 2, 
	50, 2, 2, 68, 2, 3, 13, 2, 
	3, 33, 2, 5, 4, 2, 6, 4, 
	2, 7, 4, 2, 8, 4, 2, 9, 
	4, 2, 10, 4, 2, 12, 51, 2, 
	13, 52, 2, 15, 58, 2, 19, 38, 
	2, 22, 2, 2, 23, 16, 2, 24, 
	16, 2, 25, 16, 2, 26, 16, 2, 
	27, 85, 2, 33, 69, 2, 36, 2, 
	2, 36, 18, 2, 37, 81, 2, 38, 
	82, 2, 39, 44, 2, 43, 45, 2, 
	43, 98, 2, 45, 99, 2, 48, 2, 
	2, 48, 3, 2, 48, 13, 2, 48, 
	15, 2, 48, 17, 2, 48, 33, 2, 
	48, 44, 3, 1, 2, 50, 3, 1, 
	2, 68, 3, 5, 4, 3, 3, 6, 
	4, 2, 3, 7, 4, 2, 3, 8, 
	4, 2, 3, 9, 4, 2, 3, 10, 
	4, 2, 3, 23, 16, 2, 3, 23, 
	16, 20, 3, 23, 16, 21, 3, 24, 
	16, 2, 3, 24, 16, 20, 3, 24, 
	16, 21, 3, 25, 16, 26, 3, 43, 
	44, 45, 3, 43, 98, 45, 3, 48, 
	2, 78, 3, 48, 19, 3, 3, 48, 
	27, 2, 3, 48, 32, 65, 3, 48, 
	38, 79, 3, 48, 40, 92, 3, 48, 
	41, 93, 3, 48, 42, 94, 3, 48, 
	44, 96, 4, 2, 34, 35, 80, 4, 
	48, 0, 2, 13, 4, 48, 0, 2, 
	33, 4, 48, 2, 78, 38, 4, 48, 
	19, 3, 38, 4, 48, 27, 2, 78, 
	4, 48, 36, 77, 17, 4, 48, 40, 
	45, 97, 4, 48, 41, 45, 97, 4, 
	48, 42, 45, 97, 4, 48, 43, 95, 
	44, 4, 48, 44, 96, 45, 5, 6, 
	4, 1, 2, 50, 5, 6, 4, 1, 
	2, 68, 5, 7, 4, 1, 2, 50, 
	5, 7, 4, 1, 2, 68, 5, 8, 
	4, 1, 2, 50, 5, 8, 4, 1, 
	2, 68, 5, 9, 4, 1, 2, 50, 
	5, 9, 4, 1, 2, 68, 5, 10, 
	4, 1, 2, 50, 5, 10, 4, 1, 
	2, 68, 5, 28, 16, 29, 30, 66, 
	5, 48, 2, 34, 35, 76, 7, 48, 
	28, 16, 29, 30, 64, 32
};

static const char _haml_cond_offsets[] = {
	0, 0, 0, 1, 2, 2, 2, 3, 
	4, 4, 4, 4, 4, 5, 6, 6, 
	6, 7, 8, 8, 8, 8, 8, 8, 
	8, 8, 8, 9, 10, 11, 12, 13, 
	13, 14, 15, 15, 15, 15, 15, 15, 
	15, 15, 16, 17, 18, 19, 20, 21, 
	21, 21, 22, 23, 23, 23, 23, 23, 
	24, 25, 25, 25, 26, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 28, 29, 
	30, 31, 32, 32, 33, 34, 34, 34, 
	34, 34, 34, 34, 34, 36, 38, 38, 
	38, 38, 38, 38, 38, 38, 40, 42, 
	42, 42, 42, 42, 42, 42, 44, 46, 
	46, 47, 48, 49, 49, 51, 53, 54, 
	54, 54, 54, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 56, 56, 57, 57, 
	57, 58, 58, 58, 59, 59, 60, 60, 
	60, 60, 61, 61, 61, 62, 62, 62, 
	63, 63, 63, 64, 64, 65, 65, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	67, 69, 71, 73, 75, 77, 77, 77, 
	77, 77
};

static const char _haml_cond_lengths[] = {
	0, 0, 1, 1, 0, 0, 1, 1, 
	0, 0, 0, 0, 1, 1, 0, 0, 
	1, 1, 0, 0, 0, 0, 0, 0, 
	0, 0, 1, 1, 1, 1, 1, 0, 
	1, 1, 0, 0, 0, 0, 0, 0, 
	0, 1, 1, 1, 1, 1, 1, 0, 
	0, 1, 1, 0, 0, 0, 0, 1, 
	1, 0, 0, 1, 1, 0, 0, 0, 
	0, 0, 0, 0, 0, 1, 1, 1, 
	1, 1, 0, 1, 1, 0, 0, 0, 
	0, 0, 0, 0, 2, 2, 0, 0, 
	0, 0, 0, 0, 0, 2, 2, 0, 
	0, 0, 0, 0, 0, 2, 2, 0, 
	1, 1, 1, 0, 2, 2, 1, 0, 
	0, 0, 1, 0, 0, 0, 0, 0, 
	0, 0, 0, 1, 0, 1, 0, 0, 
	1, 0, 0, 1, 0, 1, 0, 0, 
	0, 1, 0, 0, 1, 0, 0, 1, 
	0, 0, 1, 0, 1, 0, 1, 0, 
	0, 0, 0, 0, 0, 0, 0, 1, 
	2, 2, 2, 2, 2, 0, 0, 0, 
	0, 0
};

static const short _haml_cond_keys[] = {
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 61, 61, 
	61, 61, 61, 61, 61, 61, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 93, 93, 
	13, 13, 93, 93, 13, 13, 125, 125, 
	13, 13, 125, 125, 13, 13, 32, 32, 
	13, 13, 32, 32, 32, 32, 32, 32, 
	32, 32, 13, 13, 32, 32, 13, 13, 
	32, 32, 32, 32, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 61, 61, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	32, 32, 13, 13, 32, 32, 13, 13, 
	32, 32, 13, 13, 32, 32, 13, 13, 
	32, 32, 0
};

static const char _haml_cond_spaces[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 1, 
	1, 1, 1, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 3, 0, 3, 0, 2, 
	0, 2, 0, 6, 0, 6, 4, 6, 
	5, 0, 6, 0, 6, 6, 0, 0, 
	0, 0, 0, 1, 0, 0, 0, 0, 
	0, 0, 0, 0, 5, 0, 6, 0, 
	4, 0, 5, 0, 6, 0
};

static const short _haml_key_offsets[] = {
	0, 0, 1, 13, 25, 28, 29, 43, 
	57, 60, 61, 64, 67, 81, 95, 98, 
	99, 111, 123, 126, 127, 132, 135, 136, 
	137, 138, 139, 150, 161, 173, 185, 197, 
	198, 210, 222, 225, 226, 227, 228, 229, 
	230, 231, 237, 244, 251, 258, 270, 282, 
	285, 286, 300, 314, 317, 318, 321, 324, 
	338, 352, 355, 356, 368, 380, 383, 384, 
	389, 392, 393, 394, 395, 396, 407, 418, 
	430, 442, 454, 455, 467, 479, 482, 483, 
	484, 485, 497, 507, 517, 532, 547, 548, 
	554, 555, 557, 558, 563, 566, 581, 596, 
	597, 607, 615, 622, 630, 633, 640, 647, 
	648, 649, 652, 653, 654, 661, 668, 671, 
	672, 687, 691, 698, 701, 708, 711, 716, 
	722, 728, 734, 735, 752, 754, 766, 769, 
	777, 789, 794, 795, 807, 808, 820, 823, 
	826, 827, 844, 846, 846, 858, 861, 869, 
	881, 886, 887, 899, 900, 920, 924, 933, 
	937, 941, 947, 949, 951, 965, 970, 976, 
	986, 999, 1014, 1027, 1040, 1055, 1067, 1070, 
	1073, 1075
};

static const short _haml_trans_keys[] = {
	10, 9, 10, 12, 32, 34, 92, 269, 
	525, -128, 11, 14, 127, 9, 10, 12, 
	32, 34, 92, 269, 525, -128, 11, 14, 
	127, 10, 12, 13, 10, 9, 10, 12, 
	32, 41, 92, 93, 125, 269, 525, -128, 
	11, 14, 127, 9, 10, 12, 32, 41, 
	92, 93, 125, 269, 525, -128, 11, 14, 
	127, 10, 12, 13, 10, 40, 91, 123, 
	40, 91, 123, 9, 10, 12, 32, 41, 
	92, 93, 125, 269, 525, -128, 11, 14, 
	127, 9, 10, 12, 32, 41, 92, 93, 
	125, 269, 525, -128, 11, 14, 127, 10, 
	12, 13, 10, 9, 10, 12, 32, 39, 
	92, 269, 525, -128, 11, 14, 127, 9, 
	10, 12, 32, 39, 92, 269, 525, -128, 
	11, 14, 127, 10, 12, 13, 10, 10, 
	47, 92, 12, 13, 10, 12, 13, 101, 
	103, 105, 110, 9, 10, 12, 32, 61, 
	269, 525, -128, 11, 14, 127, 9, 10, 
	12, 32, 61, 269, 525, -128, 11, 14, 
	127, 9, 10, 12, 32, 61, 101, 269, 
	525, -128, 11, 14, 127, 9, 10, 12, 
	32, 61, 110, 269, 525, -128, 11, 14, 
	127, 9, 10, 12, 32, 61, 100, 269, 
	525, -128, 11, 14, 127, 10, 9, 10, 
	12, 32, 92, 96, 269, 525, -128, 11, 
	14, 127, 9, 10, 12, 32, 92, 96, 
	269, 525, -128, 11, 14, 127, 10, 12, 
	13, 10, 10, 101, 103, 105, 110, 829, 
	1085, -128, 60, 62, 127, 101, 829, 1085, 
	-128, 60, 62, 127, 110, 829, 1085, -128, 
	60, 62, 127, 100, 829, 1085, -128, 60, 
	62, 127, 9, 10, 12, 32, 34, 92, 
	269, 525, -128, 11, 14, 127, 9, 10, 
	12, 32, 34, 92, 269, 525, -128, 11, 
	14, 127, 10, 12, 13, 10, 9, 10, 
	12, 32, 41, 92, 93, 125, 269, 525, 
	-128, 11, 14, 127, 9, 10, 12, 32, 
	41, 92, 93, 125, 269, 525, -128, 11, 
	14, 127, 10, 12, 13, 10, 40, 91, 
	123, 40, 91, 123, 9, 10, 12, 32, 
	41, 92, 93, 125, 269, 525, -128, 11, 
	14, 127, 9, 10, 12, 32, 41, 92, 
	93, 125, 269, 525, -128, 11, 14, 127, 
	10, 12, 13, 10, 9, 10, 12, 32, 
	39, 92, 269, 525, -128, 11, 14, 127, 
	9, 10, 12, 32, 39, 92, 269, 525, 
	-128, 11, 14, 127, 10, 12, 13, 10, 
	10, 47, 92, 12, 13, 10, 12, 13, 
	101, 103, 105, 110, 9, 10, 12, 32, 
	61, 269, 525, -128, 11, 14, 127, 9, 
	10, 12, 32, 61, 269, 525, -128, 11, 
	14, 127, 9, 10, 12, 32, 61, 101, 
	269, 525, -128, 11, 14, 127, 9, 10, 
	12, 32, 61, 110, 269, 525, -128, 11, 
	14, 127, 9, 10, 12, 32, 61, 100, 
	269, 525, -128, 11, 14, 127, 10, 9, 
	10, 12, 32, 92, 96, 269, 525, -128, 
	11, 14, 127, 9, 10, 12, 32, 92, 
	96, 269, 525, -128, 11, 14, 127, 10, 
	12, 13, 10, 10, 10, 32, 33, 38, 
	45, 61, 91, 123, 126, 9, 10, 12, 
	13, 32, 45, 61, 91, 123, 126, 9, 
	10, 12, 13, 9, 10, 32, 45, 61, 
	91, 123, 126, 12, 13, 9, 10, 12, 
	32, 91, 269, 525, 1885, 2141, -128, 11, 
	14, 92, 94, 127, 9, 10, 12, 32, 
	91, 269, 525, 1885, 2141, -128, 11, 14, 
	92, 94, 127, 10, 33, 38, 45, 47, 
	61, 126, 61, 9, 32, 47, 33, 38, 
	45, 61, 126, 9, 32, 61, 9, 10, 
	12, 32, 123, 269, 525, 1405, 1661, -128, 
	11, 14, 124, 126, 127, 9, 10, 12, 
	32, 123, 269, 525, 1405, 1661, -128, 11, 
	14, 124, 126, 127, 10, 32, 45, 61, 
	91, 123, 126, 9, 10, 12, 13, 9, 
	10, 32, 61, 91, 123, 12, 13, 32, 
	91, 123, 9, 10, 12, 13, 32, 61, 
	91, 123, 9, 10, 12, 13, 9, 32, 
	35, 10, 12, 269, 525, 3616, 3872, 4128, 
	10, 12, 269, 525, 3616, 3872, 4128, 10, 
	2592, 3616, 3872, 4128, 3104, 10, 10, 12, 
	269, 525, 3616, 3872, 4128, 10, 12, 269, 
	525, 3616, 3872, 4128, 3616, 3872, 4128, 10, 
	10, 32, 33, 35, 37, 38, 45, 46, 
	47, 61, 126, 9, 11, 12, 13, 10, 
	124, 12, 13, 124, 269, 525, -128, 12, 
	14, 127, 124, 12, 13, 10, 32, 124, 
	9, 11, 12, 13, 32, 9, 13, 10, 
	61, 124, 12, 13, 48, 57, 65, 90, 
	97, 122, 48, 57, 65, 90, 97, 122, 
	48, 57, 65, 90, 97, 122, 61, 9, 
	10, 12, 32, 34, 35, 37, 39, 47, 
	61, 96, 269, 525, -128, 8, 14, 127, 
	9, 32, 9, 10, 12, 32, 34, 92, 
	269, 525, -128, 11, 14, 127, 10, 12, 
	13, 40, 81, 91, 113, 114, 123, 119, 
	120, 9, 10, 12, 32, 39, 92, 269, 
	525, -128, 11, 14, 127, 10, 47, 92, 
	12, 13, 98, 9, 10, 12, 32, 92, 
	96, 269, 525, -128, 11, 14, 127, 10, 
	32, 35, 829, 1085, -128, 8, 9, 13, 
	14, 60, 62, 127, 32, 9, 13, 10, 
	12, 13, 98, 9, 10, 12, 32, 34, 
	35, 37, 39, 47, 61, 96, 269, 525, 
	-128, 8, 14, 127, 9, 32, 9, 10, 
	12, 32, 34, 92, 269, 525, -128, 11, 
	14, 127, 10, 12, 13, 40, 81, 91, 
	113, 114, 123, 119, 120, 9, 10, 12, 
	32, 39, 92, 269, 525, -128, 11, 14, 
	127, 10, 47, 92, 12, 13, 98, 9, 
	10, 12, 32, 92, 96, 269, 525, -128, 
	11, 14, 127, 10, 9, 11, 32, 33, 
	35, 37, 38, 45, 46, 47, 61, 126, 
	269, 525, -128, 8, 10, 12, 14, 127, 
	10, 124, 12, 13, 10, 12, 124, 269, 
	525, -128, 11, 14, 127, 10, 124, 12, 
	13, 10, 124, 12, 13, 9, 10, 32, 
	124, 12, 13, 9, 32, 9, 32, 9, 
	10, 32, 33, 35, 37, 38, 45, 46, 
	47, 61, 126, 12, 13, 10, 61, 124, 
	12, 13, 9, 10, 32, 124, 12, 13, 
	9, 10, 12, 32, 269, 525, -128, 11, 
	14, 127, 9, 10, 12, 269, 525, 2848, 
	3104, -128, 11, 14, 31, 33, 127, 9, 
	10, 12, 269, 525, 3360, 3616, 3872, 4128, 
	-128, 11, 14, 31, 33, 127, 9, 10, 
	12, 269, 525, 2336, 2592, -128, 11, 14, 
	31, 33, 127, 9, 10, 12, 269, 525, 
	2848, 3104, -128, 11, 14, 31, 33, 127, 
	9, 10, 12, 269, 525, 3360, 3616, 3872, 
	4128, -128, 11, 14, 31, 33, 127, 32, 
	33, 38, 45, 61, 91, 123, 126, 9, 
	10, 12, 13, 9, 32, 35, 9, 32, 
	61, 9, 32, 10, 0
};

static const char _haml_single_lengths[] = {
	0, 1, 8, 8, 1, 1, 10, 10, 
	1, 1, 3, 3, 10, 10, 1, 1, 
	8, 8, 1, 1, 3, 1, 1, 1, 
	1, 1, 7, 7, 8, 8, 8, 1, 
	8, 8, 1, 1, 1, 1, 1, 1, 
	1, 2, 3, 3, 3, 8, 8, 1, 
	1, 10, 10, 1, 1, 3, 3, 10, 
	10, 1, 1, 8, 8, 1, 1, 3, 
	1, 1, 1, 1, 1, 7, 7, 8, 
	8, 8, 1, 8, 8, 1, 1, 1, 
	1, 8, 6, 8, 9, 9, 1, 6, 
	1, 2, 1, 5, 3, 9, 9, 1, 
	6, 6, 3, 4, 3, 7, 7, 1, 
	1, 3, 1, 1, 7, 7, 3, 1, 
	11, 2, 3, 1, 3, 1, 3, 0, 
	0, 0, 1, 13, 2, 8, 1, 6, 
	8, 3, 1, 8, 1, 4, 1, 1, 
	1, 13, 2, 0, 8, 1, 6, 8, 
	3, 1, 8, 1, 14, 2, 5, 2, 
	2, 4, 2, 2, 12, 3, 4, 6, 
	7, 9, 7, 7, 9, 8, 3, 3, 
	2, 1
};

static const char _haml_range_lengths[] = {
	0, 0, 2, 2, 1, 0, 2, 2, 
	1, 0, 0, 0, 2, 2, 1, 0, 
	2, 2, 1, 0, 1, 1, 0, 0, 
	0, 0, 2, 2, 2, 2, 2, 0, 
	2, 2, 1, 0, 0, 0, 0, 0, 
	0, 2, 2, 2, 2, 2, 2, 1, 
	0, 2, 2, 1, 0, 0, 0, 2, 
	2, 1, 0, 2, 2, 1, 0, 1, 
	1, 0, 0, 0, 0, 2, 2, 2, 
	2, 2, 0, 2, 2, 1, 0, 0, 
	0, 2, 2, 1, 3, 3, 0, 0, 
	0, 0, 0, 0, 0, 3, 3, 0, 
	2, 1, 2, 2, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	2, 1, 2, 1, 2, 1, 1, 3, 
	3, 3, 0, 2, 0, 2, 1, 1, 
	2, 1, 0, 2, 0, 4, 1, 1, 
	0, 2, 0, 0, 2, 1, 1, 2, 
	1, 0, 2, 0, 3, 1, 2, 1, 
	1, 1, 0, 0, 1, 1, 1, 2, 
	3, 3, 3, 3, 3, 2, 0, 0, 
	0, 0
};

static const short _haml_index_offsets[] = {
	0, 0, 2, 13, 24, 27, 29, 42, 
	55, 58, 60, 64, 68, 81, 94, 97, 
	99, 110, 121, 124, 126, 131, 134, 136, 
	138, 140, 142, 152, 162, 173, 184, 195, 
	197, 208, 219, 222, 224, 226, 228, 230, 
	232, 234, 239, 245, 251, 257, 268, 279, 
	282, 284, 297, 310, 313, 315, 319, 323, 
	336, 349, 352, 354, 365, 376, 379, 381, 
	386, 389, 391, 393, 395, 397, 407, 417, 
	428, 439, 450, 452, 463, 474, 477, 479, 
	481, 483, 494, 503, 513, 526, 539, 541, 
	548, 550, 553, 555, 561, 565, 578, 591, 
	593, 602, 610, 616, 623, 627, 635, 643, 
	645, 647, 651, 653, 655, 663, 671, 675, 
	677, 691, 695, 701, 704, 710, 713, 718, 
	722, 726, 730, 732, 748, 751, 762, 765, 
	773, 784, 789, 791, 802, 804, 813, 816, 
	819, 821, 837, 840, 841, 852, 855, 863, 
	874, 879, 881, 892, 894, 912, 916, 924, 
	928, 932, 938, 941, 944, 958, 963, 969, 
	978, 989, 1002, 1013, 1024, 1037, 1048, 1052, 
	1056, 1059
};

static const unsigned char _haml_trans_targs[] = {
	113, 112, 2, 3, 3, 2, 123, 4, 
	5, 3, 2, 2, 123, 2, 3, 3, 
	2, 123, 4, 5, 3, 2, 2, 123, 
	123, 123, 2, 3, 123, 6, 7, 7, 
	6, 123, 8, 123, 123, 9, 7, 6, 
	6, 123, 6, 7, 7, 6, 123, 8, 
	123, 123, 9, 7, 6, 6, 123, 123, 
	123, 6, 7, 123, 6, 6, 6, 123, 
	12, 12, 12, 123, 12, 13, 13, 12, 
	123, 14, 123, 123, 15, 13, 12, 12, 
	123, 12, 13, 13, 12, 123, 14, 123, 
	123, 15, 13, 12, 12, 123, 123, 123, 
	12, 13, 123, 16, 17, 17, 16, 123, 
	18, 19, 17, 16, 16, 123, 16, 17, 
	17, 16, 123, 18, 19, 17, 16, 16, 
	123, 123, 123, 16, 17, 123, 123, 123, 
	21, 123, 20, 123, 123, 20, 23, 123, 
	24, 123, 25, 123, 26, 123, 26, 27, 
	27, 26, 28, 31, 27, 26, 26, 123, 
	26, 27, 27, 26, 28, 31, 27, 26, 
	26, 123, 26, 27, 27, 26, 28, 29, 
	31, 27, 26, 26, 123, 26, 27, 27, 
	26, 28, 30, 31, 27, 26, 26, 123, 
	26, 27, 27, 26, 28, 123, 31, 27, 
	26, 26, 123, 27, 123, 32, 33, 33, 
	32, 34, 123, 35, 33, 32, 32, 123, 
	32, 33, 33, 32, 34, 123, 35, 33, 
	32, 32, 123, 123, 123, 32, 33, 123, 
	123, 0, 38, 133, 39, 133, 40, 133, 
	41, 133, 41, 42, 41, 41, 133, 43, 
	41, 42, 41, 41, 133, 44, 41, 42, 
	41, 41, 133, 133, 41, 42, 41, 41, 
	133, 45, 46, 46, 45, 137, 47, 48, 
	46, 45, 45, 137, 45, 46, 46, 45, 
	137, 47, 48, 46, 45, 45, 137, 137, 
	137, 45, 46, 137, 49, 50, 50, 49, 
	137, 51, 137, 137, 52, 50, 49, 49, 
	137, 49, 50, 50, 49, 137, 51, 137, 
	137, 52, 50, 49, 49, 137, 137, 137, 
	49, 50, 137, 49, 49, 49, 137, 55, 
	55, 55, 137, 55, 56, 56, 55, 137, 
	57, 137, 137, 58, 56, 55, 55, 137, 
	55, 56, 56, 55, 137, 57, 137, 137, 
	58, 56, 55, 55, 137, 137, 137, 55, 
	56, 137, 59, 60, 60, 59, 137, 61, 
	62, 60, 59, 59, 137, 59, 60, 60, 
	59, 137, 61, 62, 60, 59, 59, 137, 
	137, 137, 59, 60, 137, 137, 137, 64, 
	137, 63, 137, 137, 63, 66, 137, 67, 
	137, 68, 137, 69, 137, 69, 70, 70, 
	69, 71, 74, 70, 69, 69, 137, 69, 
	70, 70, 69, 71, 74, 70, 69, 69, 
	137, 69, 70, 70, 69, 71, 72, 74, 
	70, 69, 69, 137, 69, 70, 70, 69, 
	71, 73, 74, 70, 69, 69, 137, 69, 
	70, 70, 69, 71, 137, 74, 70, 69, 
	69, 137, 70, 137, 75, 76, 76, 75, 
	77, 137, 78, 76, 75, 75, 137, 75, 
	76, 76, 75, 77, 137, 78, 76, 75, 
	75, 137, 137, 137, 75, 76, 137, 139, 
	0, 151, 148, 148, 96, 96, 98, 99, 
	148, 148, 98, 148, 148, 82, 148, 83, 
	83, 84, 93, 83, 148, 148, 82, 148, 
	148, 148, 83, 83, 84, 93, 83, 148, 
	82, 84, 85, 85, 84, 84, 86, 85, 
	84, 87, 84, 84, 84, 148, 84, 85, 
	85, 84, 84, 86, 85, 84, 87, 84, 
	84, 84, 148, 85, 148, 88, 88, 89, 
	90, 92, 89, 148, 89, 148, 148, 148, 
	148, 91, 148, 88, 88, 89, 92, 89, 
	148, 148, 148, 89, 148, 93, 94, 94, 
	93, 93, 95, 94, 93, 87, 93, 93, 
	93, 148, 93, 94, 94, 93, 93, 95, 
	94, 93, 87, 93, 93, 93, 148, 94, 
	148, 148, 83, 97, 84, 93, 83, 148, 
	148, 82, 148, 148, 148, 83, 148, 148, 
	148, 82, 148, 148, 148, 148, 148, 82, 
	148, 98, 148, 148, 148, 148, 82, 148, 
	148, 159, 148, 102, 102, 103, 102, 104, 
	106, 110, 148, 102, 102, 103, 102, 104, 
	106, 110, 148, 102, 148, 105, 148, 104, 
	106, 110, 148, 160, 148, 101, 148, 109, 
	102, 103, 102, 104, 106, 110, 148, 102, 
	102, 103, 102, 104, 106, 110, 148, 105, 
	160, 161, 148, 148, 0, 117, 117, 118, 
	119, 120, 118, 112, 121, 112, 122, 112, 
	116, 117, 113, 112, 114, 112, 113, 114, 
	1, 115, 113, 113, 112, 114, 112, 113, 
	117, 116, 114, 116, 117, 113, 117, 117, 
	112, 112, 113, 114, 112, 113, 119, 119, 
	119, 112, 120, 120, 120, 112, 121, 121, 
	121, 112, 112, 112, 124, 123, 123, 124, 
	125, 126, 127, 128, 129, 130, 131, 36, 
	132, 123, 123, 0, 124, 124, 123, 2, 
	3, 3, 2, 123, 4, 5, 3, 2, 
	2, 123, 123, 123, 126, 6, 10, 6, 
	10, 11, 6, 11, 123, 16, 17, 17, 
	16, 123, 18, 19, 17, 16, 16, 123, 
	123, 123, 21, 123, 20, 22, 123, 32, 
	33, 33, 32, 34, 123, 35, 33, 32, 
	32, 123, 123, 123, 134, 135, 133, 136, 
	133, 134, 133, 133, 0, 134, 134, 133, 
	133, 133, 135, 37, 133, 138, 139, 139, 
	138, 140, 141, 142, 143, 144, 145, 146, 
	79, 147, 137, 137, 0, 138, 138, 137, 
	137, 45, 46, 46, 45, 137, 47, 48, 
	46, 45, 45, 137, 137, 137, 141, 49, 
	53, 49, 53, 54, 49, 54, 137, 59, 
	60, 60, 59, 137, 61, 62, 60, 59, 
	59, 137, 137, 137, 64, 137, 63, 65, 
	137, 75, 76, 76, 75, 77, 137, 78, 
	76, 75, 75, 137, 139, 137, 153, 149, 
	154, 157, 148, 165, 157, 166, 148, 159, 
	167, 168, 111, 169, 149, 148, 149, 0, 
	148, 150, 148, 149, 151, 151, 150, 80, 
	152, 149, 149, 148, 148, 150, 148, 149, 
	151, 150, 148, 149, 153, 148, 153, 150, 
	148, 149, 155, 156, 148, 155, 155, 148, 
	153, 148, 154, 157, 148, 81, 157, 100, 
	148, 159, 92, 89, 148, 149, 148, 158, 
	150, 148, 149, 149, 148, 149, 150, 148, 
	149, 159, 101, 101, 159, 107, 108, 159, 
	159, 148, 159, 101, 101, 107, 108, 159, 
	163, 159, 159, 159, 148, 159, 101, 101, 
	107, 108, 159, 162, 163, 164, 159, 159, 
	159, 148, 159, 101, 101, 107, 108, 159, 
	161, 159, 159, 159, 148, 159, 101, 101, 
	107, 108, 159, 160, 159, 159, 159, 148, 
	159, 101, 101, 107, 108, 159, 161, 160, 
	161, 159, 159, 159, 148, 148, 96, 96, 
	98, 99, 148, 148, 98, 148, 148, 82, 
	148, 148, 159, 148, 148, 148, 89, 148, 
	148, 148, 148, 148, 148, 112, 123, 123, 
	123, 123, 123, 123, 123, 123, 123, 123, 
	123, 123, 123, 123, 123, 123, 123, 123, 
	123, 123, 123, 123, 123, 123, 123, 123, 
	123, 123, 123, 123, 123, 123, 123, 123, 
	133, 133, 133, 133, 133, 133, 133, 133, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 148, 148, 148, 148, 148, 148, 
	148, 148, 148, 148, 148, 148, 148, 148, 
	148, 148, 148, 148, 148, 148, 148, 148, 
	148, 148, 148, 148, 148, 148, 148, 148, 
	148, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 123, 123, 123, 123, 123, 
	123, 123, 123, 123, 133, 133, 133, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 148, 148, 148, 148, 148, 148, 148, 
	148, 148, 148, 148, 148, 148, 148, 148, 
	148, 148, 148, 148, 148, 148, 0
};

static const short _haml_trans_actions[] = {
	326, 99, 0, 0, 0, 0, 226, 0, 
	0, 0, 1, 1, 51, 136, 136, 136, 
	136, 402, 136, 136, 136, 242, 242, 51, 
	51, 51, 1, 0, 51, 0, 0, 0, 
	0, 226, 0, 226, 226, 0, 0, 1, 
	1, 51, 139, 139, 139, 139, 414, 139, 
	414, 414, 139, 139, 246, 246, 51, 51, 
	51, 1, 0, 51, 103, 103, 103, 51, 
	103, 103, 103, 51, 0, 0, 0, 0, 
	226, 0, 226, 226, 0, 0, 1, 1, 
	51, 145, 145, 145, 145, 438, 145, 438, 
	438, 145, 145, 254, 254, 51, 51, 51, 
	1, 0, 51, 0, 0, 0, 0, 226, 
	0, 0, 0, 1, 1, 51, 133, 133, 
	133, 133, 390, 133, 133, 133, 238, 238, 
	51, 51, 51, 1, 0, 51, 51, 118, 
	0, 51, 0, 51, 51, 0, 0, 51, 
	0, 51, 0, 51, 106, 51, 0, 0, 
	0, 0, 3, 0, 0, 3, 3, 51, 
	130, 130, 130, 130, 234, 130, 130, 234, 
	234, 51, 0, 0, 0, 0, 3, 3, 
	0, 0, 3, 3, 51, 0, 0, 0, 
	0, 3, 3, 0, 0, 3, 3, 51, 
	0, 0, 0, 0, 3, 109, 0, 0, 
	3, 3, 51, 0, 51, 0, 0, 0, 
	0, 0, 226, 0, 0, 1, 1, 51, 
	142, 142, 142, 142, 142, 426, 142, 142, 
	250, 250, 51, 51, 51, 1, 0, 51, 
	148, 0, 11, 61, 11, 61, 11, 61, 
	11, 61, 11, 11, 11, 11, 61, 11, 
	11, 11, 11, 11, 61, 11, 11, 11, 
	11, 11, 61, 154, 11, 11, 11, 11, 
	61, 0, 0, 0, 0, 230, 0, 0, 
	0, 1, 1, 71, 136, 136, 136, 136, 
	408, 136, 136, 136, 242, 242, 71, 71, 
	71, 1, 0, 71, 0, 0, 0, 0, 
	230, 0, 230, 230, 0, 0, 1, 1, 
	71, 139, 139, 139, 139, 420, 139, 420, 
	420, 139, 139, 246, 246, 71, 71, 71, 
	1, 0, 71, 103, 103, 103, 71, 103, 
	103, 103, 71, 0, 0, 0, 0, 230, 
	0, 230, 230, 0, 0, 1, 1, 71, 
	145, 145, 145, 145, 444, 145, 444, 444, 
	145, 145, 254, 254, 71, 71, 71, 1, 
	0, 71, 0, 0, 0, 0, 230, 0, 
	0, 0, 1, 1, 71, 133, 133, 133, 
	133, 396, 133, 133, 133, 238, 238, 71, 
	71, 71, 1, 0, 71, 71, 121, 0, 
	71, 0, 71, 71, 0, 0, 71, 0, 
	71, 0, 71, 106, 71, 0, 0, 0, 
	0, 3, 0, 0, 3, 3, 71, 130, 
	130, 130, 130, 234, 130, 130, 234, 234, 
	71, 0, 0, 0, 0, 3, 3, 0, 
	0, 3, 3, 71, 0, 0, 0, 0, 
	3, 3, 0, 0, 3, 3, 71, 0, 
	0, 0, 0, 3, 112, 0, 0, 3, 
	3, 71, 0, 71, 0, 0, 0, 0, 
	0, 230, 0, 0, 1, 1, 71, 142, 
	142, 142, 142, 142, 432, 142, 142, 250, 
	250, 71, 71, 71, 1, 0, 71, 306, 
	0, 0, 89, 85, 0, 0, 0, 0, 
	85, 85, 0, 85, 85, 0, 91, 0, 
	0, 160, 160, 0, 91, 91, 0, 330, 
	91, 330, 0, 0, 160, 160, 0, 91, 
	0, 0, 0, 0, 0, 19, 0, 0, 
	21, 1, 1, 1, 1, 91, 166, 166, 
	166, 166, 274, 166, 166, 278, 270, 270, 
	270, 270, 91, 0, 91, 0, 0, 0, 
	0, 0, 0, 91, 0, 91, 330, 330, 
	91, 0, 91, 0, 0, 0, 0, 0, 
	91, 330, 330, 0, 91, 0, 0, 0, 
	0, 19, 0, 0, 21, 1, 1, 1, 
	1, 91, 163, 163, 163, 163, 262, 163, 
	163, 266, 258, 258, 258, 258, 91, 0, 
	91, 91, 0, 0, 160, 160, 0, 91, 
	91, 0, 330, 91, 330, 0, 91, 91, 
	91, 0, 91, 91, 91, 91, 91, 0, 
	91, 0, 91, 91, 91, 91, 0, 330, 
	330, 208, 85, 169, 169, 169, 169, 169, 
	169, 169, 87, 172, 172, 172, 172, 172, 
	172, 172, 87, 0, 87, 13, 87, 0, 
	0, 0, 87, 217, 87, 0, 87, 169, 
	169, 169, 169, 169, 169, 169, 87, 282, 
	282, 282, 282, 282, 282, 282, 87, 13, 
	217, 217, 87, 187, 0, 33, 33, 286, 
	375, 365, 286, 290, 370, 202, 196, 290, 
	193, 33, 385, 101, 223, 101, 326, 223, 
	35, 35, 326, 326, 97, 223, 97, 326, 
	33, 193, 223, 193, 33, 326, 33, 33, 
	93, 97, 380, 223, 97, 326, 322, 322, 
	322, 101, 314, 314, 314, 101, 318, 318, 
	318, 101, 199, 95, 5, 148, 148, 5, 
	335, 124, 211, 335, 211, 211, 335, 7, 
	7, 151, 151, 0, 5, 5, 43, 0, 
	0, 0, 0, 226, 0, 0, 0, 1, 
	1, 49, 45, 45, 0, 103, 0, 103, 
	0, 0, 103, 0, 49, 0, 0, 0, 
	0, 226, 0, 0, 0, 1, 1, 49, 
	49, 118, 0, 49, 0, 0, 49, 0, 
	0, 0, 0, 0, 226, 0, 0, 1, 
	1, 49, 148, 47, 9, 11, 53, 214, 
	53, 9, 53, 53, 0, 9, 9, 55, 
	57, 57, 11, 11, 59, 23, 306, 306, 
	23, 340, 127, 220, 340, 220, 220, 340, 
	25, 25, 178, 178, 0, 23, 23, 63, 
	450, 0, 0, 0, 0, 230, 0, 0, 
	0, 1, 1, 69, 65, 65, 0, 103, 
	0, 103, 0, 0, 103, 0, 69, 0, 
	0, 0, 0, 230, 0, 0, 0, 1, 
	1, 69, 69, 121, 0, 69, 0, 0, 
	69, 0, 0, 0, 0, 0, 230, 0, 
	0, 1, 1, 69, 462, 450, 181, 294, 
	184, 115, 190, 310, 115, 157, 190, 350, 
	310, 31, 29, 29, 345, 187, 345, 0, 
	91, 205, 91, 294, 0, 0, 205, 0, 
	0, 294, 294, 79, 175, 302, 175, 355, 
	0, 302, 175, 355, 181, 75, 181, 205, 
	75, 294, 27, 360, 75, 27, 27, 75, 
	181, 75, 27, 1, 75, 0, 1, 17, 
	75, 298, 0, 0, 75, 294, 79, 1, 
	205, 79, 294, 456, 79, 456, 205, 79, 
	294, 41, 15, 15, 41, 15, 15, 208, 
	208, 77, 41, 15, 15, 15, 15, 41, 
	41, 208, 208, 208, 77, 41, 15, 15, 
	15, 15, 41, 41, 41, 41, 208, 208, 
	208, 77, 41, 15, 15, 15, 15, 41, 
	217, 208, 208, 208, 77, 41, 15, 15, 
	15, 15, 41, 217, 208, 208, 208, 77, 
	41, 15, 15, 15, 15, 41, 217, 217, 
	217, 208, 208, 208, 77, 83, 0, 0, 
	0, 0, 83, 83, 0, 83, 83, 0, 
	330, 330, 208, 83, 330, 330, 0, 83, 
	330, 330, 83, 187, 81, 99, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	61, 61, 61, 61, 61, 61, 61, 61, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 89, 85, 91, 91, 91, 91, 
	91, 91, 91, 91, 91, 91, 91, 91, 
	91, 91, 91, 91, 91, 91, 85, 87, 
	87, 87, 87, 87, 87, 87, 87, 87, 
	87, 101, 97, 97, 93, 93, 97, 101, 
	101, 101, 95, 43, 49, 45, 49, 49, 
	49, 49, 49, 47, 55, 57, 59, 63, 
	73, 69, 65, 69, 69, 69, 69, 69, 
	67, 91, 79, 175, 175, 75, 75, 75, 
	75, 79, 79, 77, 77, 77, 77, 77, 
	77, 83, 83, 83, 83, 81, 0
};

static const short _haml_to_state_actions[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	37, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 37, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 37, 0, 0, 
	0, 37, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 37, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0
};

static const short _haml_from_state_actions[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	39, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 39, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 39, 0, 0, 
	0, 39, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 39, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0
};

static const short _haml_eof_trans[] = {
	0, 1062, 1096, 1096, 1096, 1096, 1096, 1096, 
	1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 
	1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 
	1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 
	1096, 1096, 1096, 1096, 0, 1104, 1104, 1104, 
	1104, 1104, 1104, 1104, 1104, 1138, 1138, 1138, 
	1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 
	1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 
	1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 
	1138, 1138, 1138, 1138, 1138, 1138, 1138, 0, 
	1139, 1159, 1202, 1202, 1202, 1202, 1202, 1202, 
	1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 
	1202, 1202, 1202, 1202, 1159, 1169, 1169, 1169, 
	1169, 1169, 1169, 1169, 1169, 1169, 1169, 0, 
	0, 1178, 1175, 1175, 1174, 1174, 1175, 1178, 
	1178, 1178, 1179, 0, 1180, 1187, 1182, 1187, 
	1187, 1187, 1187, 1187, 1188, 0, 1189, 1190, 
	1191, 0, 1192, 1193, 1200, 1195, 1200, 1200, 
	1200, 1200, 1200, 1201, 0, 1202, 1211, 1205, 
	1205, 1209, 1209, 1209, 1209, 1211, 1211, 1217, 
	1217, 1217, 1217, 1217, 1217, 1221, 1221, 1221, 
	1221, 1222
};

static const int haml_start = 112;
static const int haml_first_final = 112;
static const int haml_error = 0;

static const int haml_en_ruby_line = 123;
static const int haml_en_ruby_entity = 133;
static const int haml_en_haml_ruby_line = 137;
static const int haml_en_haml_line = 148;
static const int haml_en_haml_entity = 112;

#line 32 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"

#line 311 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"


/************************* Required for every parser *************************/

/* Parses a string buffer with Haml markup.
 *
 * @param *buffer The string to parse.
 * @param length The length of the string to parse.
 * @param count Integer flag specifying whether or not to count lines. If yes,
 *   uses the Ragel machine optimized for counting. Otherwise uses the Ragel
 *   machine optimized for returning entity positions.
 * @param *callback Callback function. If count is set, callback is called for
 *   every line of code, comment, or blank with 'lcode', 'lcomment', and
 *   'lblank' respectively. Otherwise callback is called for each entity found.
 */
void parse_haml(char *buffer, int length, int count,
  void (*callback) (const char *lang, const char *entity, int start, int end)
  ) {
  init

  int prior_indent_level = 0;
  int current_indent_level = 0;
  int bracket_level = 0;
  
  
#line 843 "ext/ohcount_native/ragel_parsers/haml.h"
	{
	cs = haml_start;
	top = 0;
	ts = 0;
	te = 0;
	act = 0;
	}
#line 336 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
  cs = (count) ? haml_en_haml_line : haml_en_haml_entity;
  
#line 854 "ext/ohcount_native/ragel_parsers/haml.h"
	{
	int _klen;
	unsigned int _trans;
	short _widec;
	const char *_acts;
	unsigned int _nacts;
	const short *_keys;

	if ( p == pe )
		goto _test_eof;
	if ( cs == 0 )
		goto _out;
_resume:
	_acts = _haml_actions + _haml_from_state_actions[cs];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 ) {
		switch ( *_acts++ ) {
	case 47:
#line 1 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ts = p;}
	break;
#line 876 "ext/ohcount_native/ragel_parsers/haml.h"
		}
	}

	_widec = (*p);
	_klen = _haml_cond_lengths[cs];
	_keys = _haml_cond_keys + (_haml_cond_offsets[cs]*2);
	if ( _klen > 0 ) {
		const short *_lower = _keys;
		const short *_mid;
		const short *_upper = _keys + (_klen<<1) - 2;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( _widec < _mid[0] )
				_upper = _mid - 2;
			else if ( _widec > _mid[1] )
				_lower = _mid + 2;
			else {
				switch ( _haml_cond_spaces[_haml_cond_offsets[cs] + ((_mid - _keys)>>1)] ) {
	case 0: {
		_widec = (short)(128 + ((*p) - -128));
		if ( 
#line 9 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
 p+1 < pe && *(p+1) != '\n'  ) _widec += 256;
		break;
	}
	case 1: {
		_widec = (short)(640 + ((*p) - -128));
		if ( 
#line 75 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"

  p == buffer || *(p-1) == '\r' || *(p-1) == '\n' || *(p-1) == '\f'
 ) _widec += 256;
		break;
	}
	case 2: {
		_widec = (short)(1152 + ((*p) - -128));
		if ( 
#line 208 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
 bracket_level == 0  ) _widec += 256;
		break;
	}
	case 3: {
		_widec = (short)(1664 + ((*p) - -128));
		if ( 
#line 220 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
 bracket_level == 0  ) _widec += 256;
		break;
	}
	case 4: {
		_widec = (short)(2176 + ((*p) - -128));
		if ( 
#line 227 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
current_indent_level < prior_indent_level ) _widec += 256;
		break;
	}
	case 5: {
		_widec = (short)(2688 + ((*p) - -128));
		if ( 
#line 228 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
current_indent_level >= prior_indent_level ) _widec += 256;
		break;
	}
	case 6: {
		_widec = (short)(3200 + ((*p) - -128));
		if ( 
#line 227 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
current_indent_level < prior_indent_level ) _widec += 256;
		if ( 
#line 228 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
current_indent_level >= prior_indent_level ) _widec += 512;
		break;
	}
				}
				break;
			}
		}
	}

	_keys = _haml_trans_keys + _haml_key_offsets[cs];
	_trans = _haml_index_offsets[cs];

	_klen = _haml_single_lengths[cs];
	if ( _klen > 0 ) {
		const short *_lower = _keys;
		const short *_mid;
		const short *_upper = _keys + _klen - 1;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + ((_upper-_lower) >> 1);
			if ( _widec < *_mid )
				_upper = _mid - 1;
			else if ( _widec > *_mid )
				_lower = _mid + 1;
			else {
				_trans += (_mid - _keys);
				goto _match;
			}
		}
		_keys += _klen;
		_trans += _klen;
	}

	_klen = _haml_range_lengths[cs];
	if ( _klen > 0 ) {
		const short *_lower = _keys;
		const short *_mid;
		const short *_upper = _keys + (_klen<<1) - 2;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( _widec < _mid[0] )
				_upper = _mid - 2;
			else if ( _widec > _mid[1] )
				_lower = _mid + 2;
			else {
				_trans += ((_mid - _keys)>>1);
				goto _match;
			}
		}
		_trans += _klen;
	}

_match:
_eof_trans:
	cs = _haml_trans_targs[_trans];

	if ( _haml_trans_actions[_trans] == 0 )
		goto _again;

	_acts = _haml_actions + _haml_trans_actions[_trans];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 )
	{
		switch ( *_acts++ )
		{
	case 0:
#line 30 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{
  inqueue = 1;
  if (callback_list_head) free_queue(); // free the current queue
  callback_list_head = NULL;
  callback_list_tail = NULL;
  // set backup variables
  last_line_start = line_start;
  last_line_contains_code = line_contains_code;
  last_whole_line_comment = whole_line_comment;
}
	break;
	case 1:
#line 41 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{
  if (inqueue) {
    Callback *item;
    for (item = callback_list_head; item != NULL; item = item->next)
      callback(item->lang, item->entity, item->s, item->e);
    free_queue();
    inqueue = 0;
  }
}
	break;
	case 2:
#line 53 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{
  if (!line_contains_code && !line_start) line_start = ts;
  line_contains_code = 1;
}
	break;
	case 3:
#line 58 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{
  if (!line_contains_code) {
    whole_line_comment = 1;
    if (!line_start) line_start = ts;
  }
}
	break;
	case 4:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }
	break;
	case 5:
#line 57 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 6:
#line 67 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 7:
#line 77 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 8:
#line 96 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 9:
#line 106 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 10:
#line 119 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 11:
#line 136 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = RUBY_SPACE; }
	break;
	case 12:
#line 139 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = NEWLINE;    }
	break;
	case 13:
#line 140 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = RUBY_ANY;   }
	break;
	case 14:
#line 155 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = RUBY_SPACE;   }
	break;
	case 15:
#line 156 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = RUBY_COMMENT; }
	break;
	case 16:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }
	break;
	case 17:
#line 183 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ current_indent_level++; }
	break;
	case 18:
#line 184 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ current_indent_level = 0; }
	break;
	case 19:
#line 185 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ prior_indent_level = current_indent_level; }
	break;
	case 20:
#line 186 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ bracket_level++; }
	break;
	case 21:
#line 187 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ bracket_level--; }
	break;
	case 22:
#line 188 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ bracket_level = 0; }
	break;
	case 23:
#line 199 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 24:
#line 211 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 25:
#line 225 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL;}
	break;
	case 26:
#line 226 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 27:
#line 250 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL;}
	break;
	case 28:
#line 258 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = INTERNAL_NL;}
	break;
	case 29:
#line 259 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{p--;}
	break;
	case 30:
#line 262 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ p = ts; {cs = stack[--top]; goto _again;} }
	break;
	case 31:
#line 263 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = RUBY_SPACE; }
	break;
	case 32:
#line 266 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = NEWLINE;    }
	break;
	case 33:
#line 267 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = RUBY_ANY;   }
	break;
	case 34:
#line 271 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{entity = CHECK_BLANK_ENTRY; }
	break;
	case 35:
#line 271 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{saw(RUBY_LANG)}
	break;
	case 36:
#line 272 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_SPACE; }
	break;
	case 37:
#line 275 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = NEWLINE;    }
	break;
	case 38:
#line 276 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_ANY;   }
	break;
	case 39:
#line 303 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_SPACE;          }
	break;
	case 40:
#line 304 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_ELEMENT;        }
	break;
	case 41:
#line 305 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_ELEMENT_CLASS;  }
	break;
	case 42:
#line 306 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_ELEMENT_ID;     }
	break;
	case 43:
#line 307 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_EVALUATOR;      }
	break;
	case 44:
#line 308 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_STRING;         }
	break;
	case 45:
#line 309 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ entity = HAML_ANY;            }
	break;
	case 48:
#line 1 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;}
	break;
	case 49:
#line 137 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;}
	break;
	case 50:
#line 138 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;}
	break;
	case 51:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 52:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 53:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 54:
#line 137 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;}
	break;
	case 55:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 56:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 57:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 58:
#line 145 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    callback(RUBY_LANG, ruby_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 59:
#line 158 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;}
	break;
	case 60:
#line 145 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    callback(RUBY_LANG, ruby_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 61:
#line 145 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    callback(RUBY_LANG, ruby_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 62:
#line 158 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;}
	break;
	case 63:
#line 158 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{{p = ((te))-1;}}
	break;
	case 64:
#line 262 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 9;}
	break;
	case 65:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 13;}
	break;
	case 66:
#line 262 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;}
	break;
	case 67:
#line 264 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;}
	break;
	case 68:
#line 265 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;}
	break;
	case 69:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 70:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 71:
#line 264 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;}
	break;
	case 72:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 73:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 74:
#line 36 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }}
	break;
	case 75:
#line 1 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{	switch( act ) {
	case 13:
	{{p = ((te))-1;}
    switch(entity) {
    case RUBY_SPACE:
      ls
      break;
    case RUBY_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(RUBY_LANG)
      break;
    case NEWLINE:
      std_newline(RUBY_LANG)
    }
  }
	break;
	default:
	{{p = ((te))-1;}}
	break;
	}
	}
	break;
	case 76:
#line 271 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 15;}
	break;
	case 77:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 16;}
	break;
	case 78:
#line 274 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 18;}
	break;
	case 79:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 20;}
	break;
	case 80:
#line 271 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{{stack[top++] = cs; cs = 137; goto _again;} }}
	break;
	case 81:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }}
	break;
	case 82:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }}
	break;
	case 83:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }}
	break;
	case 84:
#line 273 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;}
	break;
	case 85:
#line 274 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;}
	break;
	case 86:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }}
	break;
	case 87:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }}
	break;
	case 88:
#line 164 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }}
	break;
	case 89:
#line 273 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{{p = ((te))-1;}}
	break;
	case 90:
#line 274 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{{p = ((te))-1;}}
	break;
	case 91:
#line 1 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{	switch( act ) {
	case 15:
	{{p = ((te))-1;}{stack[top++] = cs; cs = 137; goto _again;} }
	break;
	case 16:
	{{p = ((te))-1;}
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }
	break;
	case 20:
	{{p = ((te))-1;}
    switch(entity) {
    case HAML_SPACE:
      ls
      break;
    case HAML_ANY:
      code
      break;
    case INTERNAL_NL:
      emb_internal_newline(HAML_LANG)
      break;
    case NEWLINE:
      emb_newline(HAML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HAML_LANG)
    }
  }
	break;
	default:
	{{p = ((te))-1;}}
	break;
	}
	}
	break;
	case 92:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 22;}
	break;
	case 93:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 23;}
	break;
	case 94:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 24;}
	break;
	case 95:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 25;}
	break;
	case 96:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 26;}
	break;
	case 97:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{act = 27;}
	break;
	case 98:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 99:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p+1;{
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 100:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 101:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 102:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{te = p;p--;{
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 103:
#line 281 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{{p = ((te))-1;}{
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 104:
#line 1 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{	switch( act ) {
	case 22:
	{{p = ((te))-1;}
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }
	break;
	case 23:
	{{p = ((te))-1;}
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }
	break;
	case 24:
	{{p = ((te))-1;}
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }
	break;
	case 25:
	{{p = ((te))-1;}
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }
	break;
	case 26:
	{{p = ((te))-1;}
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }
	break;
	case 27:
	{{p = ((te))-1;}
    callback(HAML_LANG, haml_entities[entity], cint(ts), cint(te));
  }
	break;
	}
	}
	break;
#line 1863 "ext/ohcount_native/ragel_parsers/haml.h"
		}
	}

_again:
	_acts = _haml_actions + _haml_to_state_actions[cs];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 ) {
		switch ( *_acts++ ) {
	case 46:
#line 1 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"
	{ts = 0;}
	break;
#line 1876 "ext/ohcount_native/ragel_parsers/haml.h"
		}
	}

	if ( cs == 0 )
		goto _out;
	if ( ++p != pe )
		goto _resume;
	_test_eof: {}
	if ( p == eof )
	{
	if ( _haml_eof_trans[cs] > 0 ) {
		_trans = _haml_eof_trans[cs] - 1;
		goto _eof_trans;
	}
	}

	_out: {}
	}
#line 338 "ext/ohcount_native/ragel_parsers/haml.rl.tmp"

  // if no newline at EOF; callback contents of last line
  if (count) { process_last_line(HAML_LANG) }
}

#endif

/*****************************************************************************/
